n, m = map(int, input().split())
matrix = [[] for i in range(m)]
'''
输入：
3 4
-1 3 6 3
7 7 9 1
10 3 4 6
'''
# 因为python是一次录入一行，所以就先把他转成一个元组或者列表
for i in range(n):
    tmp = (*map(int,input().split()))
    # 然后把每个数插入到转置后的行中。（转置后 m 行 n 列）
    # 所以录入 n 次 m 个数，肯定要把每次的 m 个数放到每一行中。
    for j in range(m):
        matrix[j].append(tmp[j])
'''
这时是这样的：
-1 7 10
3 7 3
6 9 4
3 1 6
'''
# 因为我们列表是从前往后插入的，所以第一列就是之前的第一行。
# 但是我们需要的是第一列是最后一行。所以再反方向遍历一下就行了。
for i in matrix:
    for j in range(n - 1, -1, -1):
        print(i[j], end=" "if j > 0 else "\n")
# （其实前面使用deque()的appendleft()也可以，不过要导包
# from collections import deque）

# 注意！！！numpy不是python自带的模块，所以大数据的同学注意一下，不能用这个。

# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
